In a conventional client-server architecture, a remote server may store a three dimensional (3D) model of an object and may deliver various views of the 3D model to connected clients. The delivered 3D model views may contain data necessary to render a two dimensional image of the 3D model at the client. The client then renders and displays the 2D image, and supports user interactions with the 3D model. Such user interaction may include rotating and translating the 3D model, for example, so that different 2D images of the 3D model are displayed. For complex models, a large amount of data may be needed to describe the model's geometric properties so that an image may be rendered at the client. Should the user desire to change views of the object (e.g., rotate the object 90 degrees to the right), the server must send a new set of model data to the client for rendering and display as a new image. Because of bandwidth limitations between the server and the client, and possibly processing limitations at the client, the rendering and display of the new image may be delayed considerably. As a result, the user's perception of an interactive graphics session is detrimentally affected.
One solution to this long-latency problem is proposed in U.S. Pat. No. 6,222,551 B1 to Schneider et al. Here, a server side apparatus renders a selected number of views of an object, and transmits the selected views to the client for display. The client maps the selected views onto facets of the object, and then displays the rendered object, one or more facets at a time. One limitation with this system is that the user is limited to viewing only those precise views that were transmitted to the client and mapped to the object. Thus, for example, the user may be restricted to viewing six sides of a cubical object, with the point of view of each facet of the cubical object at a center of the six facets. The user cannot subsequently rotate or translate the object to alter the view by, for example, 30 degrees left or right.
Another solution to 3D image rendering is described in U.S. Pat. No. 6,111,582 to Jenkins. Here, a technique of primitive reprojection is used in which convex graphics primitives are reprojected elements. Elements known to be visible in a previous frame are first determined by transformation and depth-comparison rasterization of the elements. Regions of the image that may contain newly visible elements are located by occlusion-exposure transitions in a depth (z) buffer and from incremental view volume motion. In these regions, a depth-prioritized data-access method of spatial ray casting is used to identify newly-identified primitives for rasterization. The server-client system uses visibility event encoding in which data representing newly visible and newly invisible primitives for each frame are transmitted to the client for display.